package com.fourgirls.xiaoxiang.controller;

import com.fourgirls.xiaoxiang.exception.Result;

import com.fourgirls.xiaoxiang.pojo.Medicine.MedicineIdVo;
import com.fourgirls.xiaoxiang.pojo.Medicine.*;
import com.fourgirls.xiaoxiang.service.Medicine.MedicineService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.CrossOrigin;

import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
@CrossOrigin
public class MedicineController {
    @Autowired
    MedicineService medicineService;
//---------------------------------------------------------------查询分割线--------------------------------------------------------

    /**
     * 查询medicine表中的所有数据
     *
     * @return 查询的数据
     */
    @RequestMapping("findAllMedicine")
    public Result findAllMedicine() {
        return Result.ok().put("data", medicineService.findAllMedicine());
    }

    /**
     * 查询medicine表中的所有数据
     *
     * @return 查询的数据
     */
    @RequestMapping("findAllMedicineId")
    public Result findAllMedicineId(@RequestBody MedicineIdVo medicineIdVo) {
        return Result.ok().put("data", medicineService.findAllMedicineId(medicineIdVo));
    }

    /**
     * 查询medicine表中的所有数据（价格从高到低排序）
     *
     * @return 查询的数据
     */
    @RequestMapping("findAllMedicineUnivalence")
    public Result findAllMedicineUnivalence() {
        return Result.ok().put("data", medicineService.findAllMedicineUnivalence());
    }

    /**
     * 查询medicine表中的所有数据（评论从高到低排序）
     *
     * @return 查询的数据
     */
    @RequestMapping("findAllMedicineEvaluate")
    public Result findAllMedicineEvaluate() {
        return Result.ok().put("data", medicineService.findAllMedicineEvaluate());
    }

    /**
     * 查询medicine表中的所有数据（销售额从高到低排序）
     *
     * @return 查询的数据
     */
    @RequestMapping("findAllMedicineSalesVolume")
    public Result findAllMedicineSalesVolume() {
        return Result.ok().put("data", medicineService.findAllMedicineSalesVolume());
    }

  /**
     * 查询medicine表中的所有数据（药品分类）
     *
     * @return 查询的数据
     */
    @RequestMapping("findAllMedicineSort")
    public Result findAllMedicineSort(@RequestBody MedicineSortVo medicineSortVo) {
        return Result.ok().put("data", medicineService.findAllMedicineSort(medicineSortVo));
    }

/**
     * 查询medicine表中的所有数据（药品名字）
     *
     * @return 查询的数据
     */
    @RequestMapping("findAllMedicineName")
    public Result findAllMedicineName(@RequestBody MedicineNameVo medicineNameVo) {
        System.out.println(medicineNameVo.getMedicineName());
        return Result.ok().put("data", medicineService.findAllMedicineName(medicineNameVo));
    }


    //---------------------------------------------------------------增加分割线--------------------------------------------------------
    @RequestMapping("addMedicine")
    public Result addMedicine(@RequestBody MedicineVo medicineVo) {
        int result = medicineService.addMedecine(medicineVo);
        if (result > 0) {
            return Result.ok("增加用户成功");
        }
        return Result.ok("增加用户失败");
    }


    //---------------------------------------------------------------删除分割线--------------------------------------------------------

    /**
     * 根据药品Id删除药品信息
     * @param allIdVo
     * @return
     */
    @RequestMapping("deleteMedicine")
    public Result deleteMedicine(@RequestBody MedicineIdVo allIdVo) {
        int result = medicineService.deleteMedecine(allIdVo);
        if (result > 0) {
            return Result.ok("删除药品成功");
        }
        return Result.ok("删除药品失败");
    }


    //---------------------------------------------------------------修改分割线--------------------------------------------------------

    /**
     * 修改medicine表中的药品数量
     *
     * @return 查询的数据
     */
    @RequestMapping("updateMedicine")
    public Result updateMedicine(@RequestBody MedicineVo medicineVo) {
        int result = medicineService.updateMedicine(medicineVo);
        if (result > 0) {
            return Result.ok("修改药品成功");
        }
        return Result.ok("修改药品失败");
    }

 /**
     * 修改medicine表中的药品数量
     *
     * @return 查询的数据
     */
    @RequestMapping("updateMedicineNumber")
    public Result updateMedicineNumber(@RequestBody MedicineNumberVo medicineNumberVo) {
        int result = medicineService.updateMedicineNumber(medicineNumberVo);
        if (result > 0) {
            return Result.ok("修改药品数量成功");
        }
        return Result.ok("修改药品数量失败");
    }

    /**
     * 修改medicine表中的所有评论数量（只能修改评论值，为后面用户增加评论+1 or -1做准备）
     *
     * @return 查询的数据
     */
    @RequestMapping("updateMedicineEvaluate")
    public Result updateMedicineEvaluate(@RequestBody MedicineEvaluateVo medicineEvaluateVo) {
        int result = medicineService.updateMedicineEvaluate(medicineEvaluateVo);
        if (result > 0) {
            return Result.ok("修改药品评论数量成功");
        }
        return Result.ok("修改药品评论数量失败");
    }

    /**
     * 查询medicine表中的所有销售额的数量（只能修改销售额，为后面用户买药品+1 or -1做准备）
     *
     * @return 查询的数据
     */
    @RequestMapping("updateMedicineSalesVolume")
    public Result updateMedicineSalesVolume(@RequestBody MedicineSalesVolumeVo medicineSalesVolumeVo) {
        int result = medicineService.updateMedicineSalesVolume(medicineSalesVolumeVo);
        if (result > 0) {
            return Result.ok("修改药品销售额数量成功");
        }
        return Result.ok("修改药品销售额数量失败");
    }
}
